The ever increasing availability of high-speed network connections has enabled the delivery of increasingly powerful computer-centric services over such high-speed network connections. Traditionally, personal computing devices utilized computer-executable instructions executing locally on such personal computing devices to perform tasks such as content creation, entertainment consumption, and other like tasks. Network communicational connections between such personal computing devices and other computing devices, such as through the ubiquitous Internet and World Wide Web, were often limited in their bandwidth and, consequently, were utilized primarily in conjunction with the consumption or dissemination of static information, such as browsing minimally interactive webpages or transmitting electronic mail messages that were composed locally on the personal computing devices. The ever increasing availability of high-speed network connections, however, has enabled personal computing devices to increasingly utilize remotely executing computer-executable instructions for tasks such as the aforementioned content creation and entertainment consumption tasks. For example, users can now access, through their personal computing devices, websites that offer users the ability to generate word processing documents, edit spreadsheets, create presentations, author email, engage in video teleconferencing, and perform other like tasks. The functionality and services offered by such websites are enabled in large part by computer-executable instructions executing remotely from the personal computing devices through which the users are accessing such websites.
As the functionality and services being made available over network communicational connections have increased in complexity, the need to configure such functionality and services has, likewise, increased. For example, a traditional, static webpage can be generated identically for a wide variety of users and computing devices and, as such, there is little need to configure such a webpage to output different content, or to change its presentational instructions. Conversely, more complex functions and services can be optimized for specific types of computing devices through which such functions and services are being consumed, specific geographic regions or markets within which such functions and services are being consumed, and numerous other such factors. For example, a network-based content creation service, such as a website offering word processing functionality, can provide a different interface depending on whether the user is accessing the service through a personal computing device having a limited display resolution, such as a laptop computing device with a small display, or whether the user is accessing the service through a personal computing device having a high resolution display, such as a desktop computing device connected to a large screen monitor. Similarly, such word processing functionality can be presented, by the website, differently to users that are utilizing one web browser application program than it is to users that are utilizing a different web browser application program that may comprise different capabilities.
Consequently, in order to determine which features and functionality should be provided to a user, and in what manner, a network-based user-facing service can first obtain information regarding various factors upon which such a determination would be based. Once such factors are known, determinations can be made as to which features and functionality, and in what manner, are to be provided. However, because such a determination is made within the context of a back-and-forth of network communications such determinations may need to be made very quickly. Unfortunately, however, as the number of factors upon which such determinations are based increases, both in dimensionality and in possible values, the quantity of different combinations of such factors increases at an exponential rate. Consequently, traditional mechanisms for evaluating such factors and making determinations based upon them can become increasingly bloated, resulting in extended delays when the service is restarted.
In addition, traditionally, the computer-executable instructions for evaluating factors and then determining which features and functionality are to be presented based on such factors, are typically incorporated with the computer-executable instructions providing such features and functionality in the first place. Consequently, even a simple change, such as a change to provide a specific feature to a group of users that were previously excluded from receiving such a feature, can result in a re-instantiation of the entire service providing codebase. Errors can also be more difficult to identify among the computer-executable instructions that evaluate the various factors because such factors do not included the sort of structure that provides for inherent error correction. For example, the factors are typically not defined in terms of objects that are strongly typed. Consequently, minor errors, such as a type mismatch, can result in sub optimal performance that could otherwise have been easily avoided.